// 引入mysql模版
const db = require('mysql');

//创建连接池对象
const mysql_pool = db.createPool(require("../config").dev);

mysql_pool.on('connection', (connection) => {
    console.log(connection);
})

mysql_pool.on('acquire', (connection) => {
    console.log('Connection d% acquired', connection.threadId);
})

mysql_pool.on('enqueue', () => {
    console.log('Waiting for vailable connection slot');
})

// module.exports.Pool = mysql_pool;
//
//
// module.exports.getConnection = (cb)=>{
//     if (typeof cb == "function"){
//         mysql_pool.getConnection(function (err,connection){
//            cb(err,connection);
//         });
//     }else {
//
//         return new Promise((resolve, reject) => {
//             mysql_pool.getConnection((err, connection) => {
//                 if(err){
//                     reject(err);
//                 }else{
//                     resolve(connection);
//                 }
//
//             });
//         });
//     }
// }
//
//
//
// module.exports.query = (sql,values,cb) => {
//     if (typeof cb == 'function') {
//         mysql_pool.getConnection( (err, connection)=> {
//             if(err){
//                 connection.release();
//                 cb(err);
//             }else{
//                 connection.query(sql,values,(error,rows)=>{
//                     connection.release();
//                     cb(error,rows);
//                 });
//             }
//
//         });
//     } else {
//         return new Promise((resolve, reject) => {
//             mysql_pool.getConnection((err, connection) => {
//                 if (err) {
//                     connection.release();
//                     reject(err);
//                 } else {
//                     connection.query(sql,values,(error,rows)=>{
//                         connection.release();
//                         if(error){
//                             reject(error);
//                         }else{
//                             resolve(rows);
//                         }
//                     });
//                 }
//             });
//         });
//     }
// }
//
// module.exports.beginTransaction = (connection,cb)=>{
//     if(typeof cb == "function"){
//         connection.beginTransaction(function (err){
//             if(err){
//                 throw err;
//             }
//             cb(null,connection);
//         });
//     }else{
//         return new Promise((resolve,reject)=>{
//             connection.beginTransaction(function (err){
//                 if(err){
//                     reject(err);
//                 }else{
//                     resolve(connection);
//                 }
//             });
//         });
//     }
// }
//
// module.exports.rollback = (connection, cb) => {
//     if(typeof cb == "function"){
//         connection.rollback(function (){
//             connection.release();
//             cb && cb();
//         });
//     }else{
//         return new Promise((resolve, reject) =>{
//             connection.rollback(function (err){
//                 connection.release();
//                 if(err){
//                     reject(err);
//                 }else{
//                     resolve();
//                 }
//             });
//         });
//     }
// }
//
// module.exports.commit = (connection,cb)=>{
//     if(typeof cb =="function"){
//         connection.commit(function (err){
//             connection.commit(function (err){
//                 if(err){
//                     connection.rollback(function (){
//                         cb && cb(err);
//                         throw err;
//                     });
//                 }
//                 connection.release();
//                 cb && cb(err);
//             });
//         });
//     }else{
//         return new Promise((resolve, reject) => {
//             connection.commit(function (err){
//                 if (err) {
//                     connection.rollback(function () {
//                         reject(err);
//                     });
//                 }
//                 connection.release();
//                 resolve();
//             });
//         });
//     }
// }
//
// this.getConnection((err,connection)=>{
//     if(err) throw err;
//     else{
//         connection.release();
//     }
// })